/**
 * Procesadores de Lenguaje, curso 2009-2010
 * @author grupo 02
 *
 */

package traductor;

import java.util.ArrayList;
import traductor.Params.modos;

/** Clase que nos permitira agrupar los atributos que devuelven
 * los distintos elementos del analizador sintactico cuando se devuelven
 * las llamadas recursivas
 */
public class AtributosSintact {
    public static enum clases{VAR, TIPO, PROC, PVAR}; //Pvar = parámetro por variable
    private String id; //id de la tabla de simbolos
    private String cod; //codigo propio de la instruccion
    private String codString; //codigo propio de la instruccion en texto
    byte codBC;         //codigo de la instruccion
    private Tipos tipo;
    private clases clase;    
    private int n; //nivel
    private int inicio;
    private ArrayList<Params> parameters;
    private Params.modos modo;
    private int tamLocal;

    public int getTamLocal() {
        return tamLocal;
    }

    public void setTamLocal(int tamLocal) {
        this.tamLocal = tamLocal;
    }

    public modos getModo() {
        return modo;
    }

    public void setModo(modos modo) {
        this.modo = modo;
    }

    public int getInicio() {
        return inicio;
    }

    public void setInicio(int inicio) {
        this.inicio = inicio;
    }

    public int getN() {
        return n;
    }

    public void setN(int n) {
        this.n = n;
    }
    private int dir; //direccion de la instruccion

    public AtributosSintact() {
        this.id = "";
        this.cod = "";
        this.tipo = new Tipos();
        this.parameters = new ArrayList<Params>();
    }

    public String getCod() {
        return cod;
    }

    public byte getBC(){
        return codBC;
    }

    public void setCod(String cod) {
        this.cod = cod;
    }

    public void setBC(int codBC) {
        this.codBC = (byte)codBC;
    }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
        this.getTipo().setIdt(id);
    }

    public Tipos getTipo() {
        return tipo;
    }

    public void setTipo(Tipos tipo) {
        this.tipo = tipo;
    }

    public int getDir() {
        return dir;
    }

    public void setDir(int dir) {
        this.dir = dir;
    }

    public String getCodString() {
        return codString;
    }

    public void setCodString(String codString) {
        this.codString = codString;
    }

    public clases getClase() {
        return clase;
    }

    public void setClase(clases clase) {
        this.clase = clase;
    }

    public void addParam(Params param){
        parameters.add(param);
    }

    public ArrayList<Params> getParameters() {
        return parameters;
    }

    public void setParameters(ArrayList<Params> parameters) {
        this.parameters = parameters;
    }

}
